package bankteam.negocio;

import java.util.ArrayList;
import java.util.Collection;

import bankteam.dao.clienteDAO;
import bankteam.modelo.Cliente;
import bankteam.excepcion.DAOExcepcion;

public class clienteNegocio {
	
	
	public void registraCliente(Cliente client)	throws Exception {
		
		String msgOK = "";
		msgOK= validarDatosCliente(client,"R");
		
		if (msgOK.equals("OK"))
		{
			clienteDAO objCliente = new clienteDAO();
			objCliente.registraCliente(client);
			msgOK= "Registro Ingresado satisfactoriamente";
		}
		else
			throw new DAOExcepcion(msgOK);
		
	

	}
	
	public void modificaCliente(Cliente client) throws DAOExcepcion {
    	
		String msgOK = "";
		msgOK= validarDatosCliente(client,"U");
				
		if (msgOK.equals("OK"))
		{
			clienteDAO objCliente = new clienteDAO();
			objCliente.modificaCliente(client);
			msgOK= "Registro modificado satisfactoriamente";
		}
		else
			//throw new Exception(msgError);
			//throw new Exception("Debe ingresar el Ruc del cliente.");
			throw new DAOExcepcion(msgOK);
		
	}
	public void eliminaCliente(int CodclienteInterno) throws DAOExcepcion 
    {
 	
		clienteDAO objCliente = new clienteDAO();
		objCliente.eliminaCliente(CodclienteInterno);
		System.out.println("Se elmino correctamente");	
	
	 }
	
	private String validarDatosCliente(Cliente client, String strAccion) 
	{
		String sctrOk = "OK";
		String strRazonSocial = existeRucCliente(client.getCodClienteInterno(), client.getRuc());		
		if(client.getCodClienteInterno()==0)
		{
			sctrOk = "Debe ingresar el codigo interno del cliente.";
		}
		else if(client.getRazonSocial().equals(""))
		{
			sctrOk = "Debe ingresar la razon social del cliente";
		}
		else if (client.getRuc().equals(""))
		{	
			sctrOk = "Debe ingresar el Ruc del cliente.";
		}
		else if (client.getTipoEmpre()==0)
		{
			sctrOk = "Debe ingresar el tipo de empresa.";
		}
		else if (client.getFecInicioOpe().equals(""))
		{
			sctrOk = "Debe ingresar la fecha de inicio de operacion.";
		}
		else if (client.getCantEmpleados()==0)
		{
			sctrOk = "Debe ingresar la cantidad de empleados de la empresa";
		}
		else if (buscarClienteCodInterno(client.getCodClienteInterno())== null && (strAccion.equals("U") || strAccion.equals("E")))
		{
			sctrOk = "El cliente ingresado no existe";
		}
		else if (strRazonSocial != "NO")
		{
			sctrOk = "El ruc ingresado ya se encuentra registrado por la empresa: " + strRazonSocial;
		}
		return sctrOk;
	}
	



	
	private Cliente buscarClienteCodInterno(int codClienteInterno)
    {
		clienteDAO objCliente = new clienteDAO();	
		Collection<Cliente> lCliente = new ArrayList<Cliente>();
		lCliente = objCliente.buscarCodClienteInterno(codClienteInterno);
		
		for(Cliente objCli : lCliente)
        {
           if (objCli.getCodClienteInterno() == codClienteInterno)
               return objCli;
        }
       return null;

    }
	private String existeRucCliente(int codClienteInterno, String rucCliente)
	{
		String sctrExiste = "NO";
		
		clienteDAO objCliente = new clienteDAO();	
		Collection<Cliente> lCliente = new ArrayList<Cliente>();
		lCliente = objCliente.buscarRucCliente(rucCliente);
				
		for(Cliente objCli : lCliente)
            if (objCli.ruc.equals(rucCliente) && objCli.getCodClienteInterno()!= codClienteInterno)
            {
            	sctrExiste = objCli.razonSocial;
            }
			
		return sctrExiste;
	}

	
}
